package controller;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;

import javax.swing.JButton;
import javax.swing.JLabel;

import view.JFrame;
import voucher_creator.VoucherCreator;
import voucher_creator.errors_manager.SystemErrorRedirecting;

public class Controller {

	private JFrame jFrame;
	private VoucherCreator voucher_creator;
	private SystemErrorRedirecting error_manager;

	public Controller() {
		this.jFrame = new JFrame();
		this.voucher_creator = new VoucherCreator();
		this.error_manager = new SystemErrorRedirecting();
		error_manager.redirectSystemErr();
		initCallbacks();
	}

	public void runApplication() {
		jFrame.setVisible(true);
	}

	private void initCallbacks() {
		JButton button_close = jFrame.getJButtonCrear();
		button_close.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent arg0) {
				String nombre_pasajero = jFrame.getJTextFieldNYA().getText();
				String dni_pasajero = jFrame.getJTextFieldDNI().getText();
				String fecha_nac = jFrame.getJTextFieldFechaNac().getText();
				String empresa = jFrame.getJTextFieldEmpresa().getText();
				String destino = jFrame.getJTextFieldDestino().getText();
				String fecha_salida = jFrame.getJTextFieldFechaSalida()
						.getText();
				String hotel = jFrame.getJTextFieldHotel().getText();
				String regimen = jFrame.getJTextFieldRegimen().getText();
				String lugar_salida = jFrame.getJTextFieldLugarSalida()
						.getText();
				String hora_presentacion = jFrame.getJTextFieldHrPresentacion()
						.getText();
				String hora_salida = jFrame.getJTextFieldHrSalida().getText();
				String message = "";

				try {
					voucher_creator.createVoucher(nombre_pasajero,
							dni_pasajero, empresa, destino, fecha_salida,
							hotel, regimen, hora_presentacion, hora_salida,
							lugar_salida);
					voucher_creator.insertIntoList(nombre_pasajero, dni_pasajero, fecha_nac, empresa, destino, fecha_salida);
					message = "Voucher Creado Satisfactoriamente";
				} catch (IOException e) {
					message = "Error al crear el voucher";
				} finally {
					JLabel label_informacion = jFrame.getJLabelInformacion();
					label_informacion.setText(message);
				}
			}
		});

		JButton button_reset = jFrame.getJButtonBorrarTodo();
		button_reset.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent arg0) {
				jFrame.getJTextFieldNYA().setText("");
				jFrame.getJTextFieldDNI().setText("");
				jFrame.getJTextFieldFechaNac().setText("");
				jFrame.getJTextFieldEmpresa().setText("");
				jFrame.getJTextFieldDestino().setText("");
				jFrame.getJTextFieldFechaSalida().setText("");
				jFrame.getJTextFieldHotel().setText("");
				jFrame.getJTextFieldHrPresentacion().setText("");
				jFrame.getJTextFieldLugarSalida().setText("");
				jFrame.getJTextFieldHrPresentacion().setText("");
				jFrame.getJTextFieldHrSalida().setText("");
				JLabel label_informacion = jFrame.getJLabelInformacion();
				label_informacion.setText("");
			}
		});

		JButton button_new_passenger = jFrame.getJButtonNuevoPasajero();
		button_new_passenger.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				jFrame.getJTextFieldNYA().setText("");
				jFrame.getJTextFieldDNI().setText("");
				jFrame.getJTextFieldFechaNac().setText("");
				JLabel label_informacion = jFrame.getJLabelInformacion();
				label_informacion.setText("");
			}
		});
	}
}
